package com.gnerv.battle.boot.module.base.business;

import com.gnerv.battle.boot.module.base.model.dto.AccountCreateDTO;
import com.gnerv.battle.boot.module.base.model.dto.AccountDTO;
import com.gnerv.battle.boot.module.base.model.dto.AccountRoleDTO;
import com.gnerv.battle.boot.module.base.model.dto.AccountUpdateDTO;
import com.gnerv.battle.boot.common.base.model.RestResult;

import java.util.List;

/**
 * @author ligen
 * @description 管理-账户业务操作
 * @createDate 2023-06-08 20:23:32
 */
public interface AccountBusiness {
    /**
     * @param accountCreateDTO
     * @return
     */
    RestResult<Void> create(AccountCreateDTO accountCreateDTO);

    /**
     * @param ukId
     * @return
     */
    RestResult<Void> deleteByUkId(String ukId);


    /**
     * @param accountUpdateDTO
     * @return
     */
    RestResult<Void> updateByUkId(AccountUpdateDTO accountUpdateDTO);

    RestResult<Void> updateRoleByUkId(AccountRoleDTO accountRoleDTO);

    /**
     * @param ukId
     * @return
     */
    RestResult<AccountDTO> selectByUkId(String ukId);

    /**
     * @param username
     * @param page
     * @param size
     * @return
     */
    RestResult<List<AccountDTO>> listByUsername(String username, Integer page, Integer size);

    /**
     * @param roleUkId
     * @return
     */
    RestResult<List<AccountDTO>> listByRoleUkId(String roleUkId);

    RestResult<List<AccountDTO>> listByOrgUkId(String orgUkId);
}
